
package Components.Templates;

import java.awt.Point;


import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;


import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;

import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;

import java.util.ArrayList;

import Components.EnvVars.IO_Vars;
import Helper.Tile;


public abstract class Entity extends BasicGameState{
   
    
    /*
     * IO_SYSTEM enthält alle I/O anfragen usw. bitte mit den methoden IO erweitern
     */
    protected ArrayList<Integer> IO_SYSTEM = new ArrayList();
    
    protected int ID;
    
    public Entity(int ID){
	this.ID = ID;
	IO_SYSTEM.add(IO_Vars.KILL);
    }
    
    //IO
    public abstract void setNewInput(int newInput);
    public abstract void removeInput(int input);
    
    public abstract void setNewOutput(int newOutput);
    public abstract void removeOutput(int ouput);
    //IO
    
    public abstract void getInput(int input , Object owner);
    public abstract int fireOutput(Object target);    
}
